from typing import List

"""
    给你一个整数数组 nums ，数组中的元素 互不相同 。
    返回该数组所有可能的子集（幂集）。
    解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。

    示例 1：   
            输入：nums = [1,2,3]
            输出：[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]] 
"""

class Solution:
    def subsets(self, nums: List[int]) -> List[List[int]]:
        ans  = [[]]
        tem = []
        def backtracking(begin):
            if begin == len(nums):
                return
            for i in range(begin,len(nums)):
                tem.append(nums[i])
                ans.append(tem.copy())
                backtracking(i+1)
                tem.pop()
            return
        backtracking(0)
        return ans